Usecase Diagram

Use case Diagram(이하 유스케이스 다이어그램)는 시스템 요구사항을 시각적으로 표현하고 이해 관계자들간 커뮤니케이션을 원활하게 하기 위해서 사용되는 도구입니다. 사용자 요구사항으로부터 기능을 식별하고 API 엔드포인트로 매핑하는데 활용될 수 있습니다.

유스케이스 다이어그램의 구성 요소

실습

자동차 렌탈 시스템을 예시로 들겠습니다. 먼저 액터를 식별해 봅시다. 자동차를 렌탈할 유저인 손님과 자동차 렌탈 서비스 직원, 카드 결제 인증 시스템(사람이 아니어도 됩니다)을 액터로 식별할 수 있을 것입니다. 모든 액터가 주체적일 필요는 없습니다. 카드 결제 인증 시스템은 손님에 의해 수동적으로 호출될 수 있습니다.

actors.png

다음으로는 유스케이스를 식별해봅시다. 시스템이 제공해야 하는 기능들이기 때문에 동사의 형태를 띄게 됩니다. 아래는 유저 정보에 접근하는 기능들에 대한 유스케이스입니다.

Use Cases.png

유스케이스 다이어그램에서 매우 중요한 관계를 그려보겠습니다. 관계는 위에서 설명했듯이 Association (호출), Generalization (일반화), Include(포함), Extend(확장)으로 나뉘어집니다.

Association Relationship

Invocation Relationship으로도 불리우는 관계는 액터와 유스케이스가 직접적인 상호작용을 취하게 됩니다. 액터가 유스케이스를 직접 호출하기도 하고, 유스케이스가 수동적인 액터에게 요청을 전달하기도 합니다.

아래 그림은 “손님이 건넨 카드를 사용하여 직원이 카드 결제 인증 시스템에게 결제요청을 보내기” 시나리오에 해당하는 유스케이스 다이어그램입니다:

Make Payment.png

직원은 Make Payment 유스케이스를 호출하며, 카드결제 인증 시스템은 Make Payment에 의해 호출됩니다.

Generalization Relationship

일반화 관계는 액터에서도 적용이 가능하고 유스케이스에서도 적용이 가능합니다.

  1. 액터 간 일반화 관계: 부모 액터의 Association을 자식 액터가 상속을 받아 부모가 호출할 수 있는 모든 유스케이스들을 자식 액터도 호출할 수 있게 됩니다.

    Actor Generalization.png

  2. 유스케이스 간 일반화 관계: 부모 유스케이스는 추상적인 기능 (Placeholder)을 상징하고, 이것을 구체적인 기능 (Specialized)으로 나눌 수 있습니다.

    Usecase Generalization.png

Include Relationship

포함 관계의 유스케이스는 Base 유스케이스와 Included 유스케이스로 구분이 됩니다. Base 유스케이스가 호출되면 언제나 Included 유스케이스를 함께 호출하게 됩니다. 가장 대표적인 사례로 “로그인”을 들 수 있습니다. 로그인을 해야만 사용이 가능한 모든 Base 유스케이스들은 Login 유스케이스를 Include하게 됩니다.

Include Relationship.png

Extend Relationship

확장 관계의 유스케이스는 Base 유스케이스와 Extended 유스케이스로 구분이 됩니다. Base 유스케이스가 호출되면 조건부로 Extended 유스케이스가 호출될 수도 있습니다. 예를 들어 게시판에 글을 쓸때 이미지를 업로드할 수도 있고 태그를 달 수도 있습니다. 이때 Post Article이 Base 유스케이스가 되고, Upload ImageSelect Tags들은 Extended 유스케이스가 될 수 있습니다.

Extend and Include Relationships.png


유스케이스 명세서: 커뮤니티 서비스

1. 액터

2. 유스케이스

UC01: 로그인

UC02: 글 보기

UC03: 글 작성

UC04: 글 수정

UC05: 글 삭제

UC06: 이미지 업로드

UC07: 태그 선택

UC08: 사용자 차단

3. 관계 요약